Code First
GraphQL ServerのCode frist→ Schema first→ Code firstの遍歴
コードで書いたものから直接GraphQL Serverを作るのか
serverというか、ちゃんと言うとresolverか
(コードファーストの)schema定義と、resolverが合体してる感じ?
ということはGraphQL特有の文法のようなものを殆ど知る必要がない?
libraryによって、表現の仕方がめっちゃ変わるんだろうな #??
よくあるフロー
libraryを使って、GraphQLのresolverを記述
そのlibraryによって、GarphQLのschemaとresolverの型を生成
clientを実装
pros
コードが常にschemaと一致する
コードを生成するタイミングを気にする必要がない
schema独自のversion管理が不要になる
モジュール単位でfileを分割できる
https://speakerdeck.com/haco/code-first-vs-schema-first
よくわからん #??
Schema firstだと無理なのか?
コードの重複を回避できる
https://speakerdeck.com/haco/code-first-vs-schema-first
Schema Definition Language (SDL)がgenricsとかに対応していないと、重複が頻出するが、コードファーストの場合は、ホスト言語の能力に助けられる
IDEのサポート能力
そのホスト言語の嬉しさ
cons
実装言語に縛られる
Schemaあがbackendの所有物になる
https://speakerdeck.com/haco/code-first-vs-schema-first
これの何が問題なのかいまいちわからん #??
clientはbackendに追従していく感じになる #??
(libraryにも依るのかもしれないが)Schema Directivesが使えないのでApollo Federationを使えない
例
❌️GraphQL Nexus
TypeGraphQL
juniper
Rust
graphql-go/graphql
graphql-ruby